<?php

require_once dirname(__FILE__).'/../lib/notificacionGeneratorConfiguration.class.php';
require_once dirname(__FILE__).'/../lib/notificacionGeneratorHelper.class.php';

/**
 * notificacion actions.
 *
 * @package    ehockey
 * @subpackage notificacion
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class notificacionActions extends autoNotificacionActions
{
	
	public function executePartidosObservados(sfWebRequest $request) 
	{
		$this->partidos = Doctrine::getTable('Partido')->getPartidosObservados();
	}
	
	public function executeNotificacionesPartido(sfWebRequest $request) 
	{
		$this->partido = $this->getRoute()->getObject();
	}
	
	public function executeVerificarNotificacion(sfWebRequest $request) 
	{
		$partido = Doctrine::getTable('Partido')->find($request->getParameter('partidoId'));
		$notificacion = Doctrine::getTable('Notificacion')->find($request->getParameter('notificacionId'));
		$notificacion->setVerificada(true);
		$notificacion->save();
		$this->getUser()->setFlash('notice', 'La notificacion se verifico con exito.');
		$this->redirect($this->generateUrl('notificacionesPartido', $partido));
	}
	
	public function executeCerrarPartido(sfWebRequest $request) 
	{
		$partido = $this->getRoute()->getObject();
		$verificadas = true;
		foreach ($partido->getNotificaciones() as $notificacion) {
			if (!$notificacion->getVerificada()) {
				$verificadas = false;
			}
		}
		if ($verificadas) {
			$partido->cerrarPartido();
			$partido->save();
			$partido->getTorneo()->contabilizarPartidosYSancionesSiCorresponde($partido->getNroFecha(), $partido->getNroRueda());
			$partido->getTorneo()->save();
			
			LogPlanilla::logCierrePlanillaConObservaciones($this->getUser()->getUsuario(), $partido);
			
			$this->getUser()->setFlash('notice', 'El partido se cerro con exito.');
			$this->redirect($this->generateUrl('partidosObservados'));
		} else {
			$this->getUser()->setFlash('error', 'Debe verificar todas las notificaciones antes de cerrar el partido');
			$this->redirect($this->generateUrl('notificacionesPartido', $partido));
		}
	}
	
	public function executeCambiarResultado(sfWebRequest $request) 
	{
		$partido = $this->getRoute()->getObject();
		
		$validator = new sfValidatorInteger(array('required' => false, 'min' => 0), array('min' => 'Valor invalido', 'invalid' => 'Valor invalido'));
		
		$resultado_local = $request->getParameter("resultado_local", 0);
		$resultado_visitante = $request->getParameter("resultado_visitante", 0);
		try{
			$validator->clean($resultado_local);
			$validator->clean($resultado_visitante);
			
			$partido->setResultadoOficialLocal($resultado_local);
			$partido->setResultadoOficialVisitante($resultado_visitante);
			$partido->save();
			
			$this->getUser()->setFlash('notice', 'El resultado se modifico con exito.');
			$this->redirect($this->generateUrl('notificacionesPartido', $partido));
		}catch(sfValidatorError $e){
			$this->getUser()->setFlash('error', 'Resultado invalido');
			$this->redirect($this->generateUrl('notificacionesPartido', $partido));
		}
	}
}
